﻿using System;
using System.Collections.ObjectModel;
using EpiNEXT.Services.Fields.Properties;

namespace EpiNEXT.Services.Fields
{
    public interface IField
    {
        Guid FieldId { get; set; }
        Guid PageId { get; set; }
        DataEntryInstrument Form { get; set; }
        Page Page { get; set; }
        string Name { get; set; }

        bool IsEnabled { get; set; }
        bool IsCurrentlyEnabled { get; set; }
        bool IsTabStop { get; set; }
        int TabIndex { get; set; }
        string Visibility { get; set; }
        string PromptText { get; set; }
        string Alias { get; set; }
        string FieldType { get; }
        string DataType { get; }
        Thickness InputBorderThickness { get; set; }

        double? PromptFontSize { get; set; }
        Color PromptForegroundColor { get; set; }
        string PromptFontWeight { get; set; }
        ObservableCollection<FieldTextPropertyTranslation> PromptTranslations { get; set; }
        ObservableCollection<FieldTextPropertyTranslation> ColumnNameTranslations { get; set; }
        double InputWidth { get; set; }
        double InputHeight { get; set; }
        double InputLeft { get; set; }
        double InputTop { get; set; }
        double InputFontSize { get; set; }
        string InputFontWeight { get; set; }

        double PromptLeft { get; set; }
        double PromptTop { get; set; }
        double PromptWidth { get; set; }
        double PromptHeight { get; set; }

        string InputFontFamily { get; set; }
        string PromptFontFamily { get; set; }

        #region Tablet Properties
        double TabletInputWidth { get; set; }
        double TabletInputHeight { get; set; }
        double TabletInputLeft { get; set; }
        double TabletInputTop { get; set; }
        double TabletInputFontSize { get; set; }

        Color TabletPromptForegroundColor { get; set; }
        double TabletPromptLeft { get; set; }
        double TabletPromptTop { get; set; }
        double TabletPromptWidth { get; set; }
        double TabletPromptHeight { get; set; }
        double? TabletPromptFontSize { get; set; }
        #endregion // Tablet Properties

        bool ShowOnPrintableForm { get; set; }
        bool ShowOnTabletForm { get; set; }
        bool ShowOnHandheldForm { get; set; }
    }
}
